Fix non-deterministic --cfg feature flag list generation
authorAndrew Watts <a@andwur.com>
Fri, 21 Apr 2017 06:11:01 +0000 (15:41 +0930)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 16 May 2017 15:07:07 +0000 (08:07 -0700)
The resolved features were returned in a HashSet and then iterated over,
which returns the feature names in arbitrary order.

See #3895

src/cargo/ops/cargo_rustc/mod.rs

index 470f700f590520c3a1c10421e5d71d45bcec6d1b..40c53731f24497316d9e9437f6cc244f5cd99b09 100644 (file)
@@ -601,7 +601,7 @@ fn rustdoc(cx: &mut Context, unit: &Unit) -> CargoResult<Work> {
 
     rustdoc.arg("-o").arg(doc_dir);
 
-    for feat in cx.resolve.features(unit.pkg.package_id()) {
+    for feat in cx.resolve.features_sorted(unit.pkg.package_id()) {
         rustdoc.arg("--cfg").arg(&format!("feature=\"{}\"", feat));
     }
 
@@ -770,7 +770,7 @@ fn build_base_args(cx: &mut Context,
         cmd.arg("--cfg").arg("test");
     }
 
-    for feat in cx.resolve.features(unit.pkg.package_id()).iter() {
+    for feat in cx.resolve.features_sorted(unit.pkg.package_id()) {
         cmd.arg("--cfg").arg(&format!("feature=\"{}\"", feat));
     }